home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / t_os / pigcc / pigcc.s < prev   
Text File  |  1993-11-30  |  3KB  |  184 lines

  1. /* Keta:NDW  1010:106  2010:210  10010:1041  100010:10384  1000010:103813 */
  2. /* FDS=1:Display short  FDS=0:Display full */
  3. /* Magic number:4012754773 */
  4. #define NDW 210
  5. #define FDS 0
  6. gcc_compiled.:
  7. .text
  8. LC0:
  9.     .ascii "Pi = %d.\12\0"
  10. LC1:
  11.     .ascii "%09d\0"
  12. LC2:
  13.     .ascii "\12\12start=%09d\12c_end=%09d\12d_end=%09d\12\0"
  14.     .align 2
  15. .globl _main
  16. _main:
  17.     pushl %ebp
  18.     movl %esp,%ebp
  19.     subl $8,%esp
  20.     pushl %edi
  21.     pushl %esi
  22.     pushl %ebx
  23.     call _clock
  24.     movl %eax,-4(%ebp)
  25.     cld
  26.     pushl %ebp
  27.     call _kyusu1
  28.     call _kyusu2
  29.     popl %ebp
  30.     call _clock
  31.     movl %eax,-8(%ebp)
  32.     pushl _a
  33.     pushl $LC0
  34.     call _printf
  35.     addl $4,%esp
  36.     movl $1000000000,%esi
  37.     movl $_a+4*NDW-4,%ebx
  38.     movl $0,(%esp)
  39.     std
  40. L5:
  41.     call _mul_a
  42.     pushl %edx
  43.     pushl $LC1
  44.     call _printf
  45.     addl $8,%esp
  46.     cmpl $_a+4+4*NDW*FDS-36*FDS,%ebx
  47.     ja L5
  48.     call _clock
  49.     pushl %eax
  50.     pushl -8(%ebp)
  51.     pushl -4(%ebp)
  52.     pushl $LC2
  53.     call _printf
  54.     leal -20(%ebp),%esp
  55.     popl %ebx
  56.     popl %esi
  57.     popl %edi
  58.     leave
  59.     ret
  60.  
  61.     .align 2
  62. _mul_a:
  63.     addl $4012754773,4(%esp)
  64.     jnc L10
  65.     subl $4,%ebx
  66. L10:
  67.     xorl %ecx,%ecx
  68.     movl %ebx,%edi
  69. L12:
  70.     movl (%edi),%eax
  71.     mull %esi
  72.     addl %ecx,%eax
  73.     adcl $0,%edx
  74.     movl %edx,%ecx
  75.     stosl
  76.     cmpl $_a,%edi
  77.     jnz L12
  78.     ret
  79.  
  80.     .align 2
  81. _kyusu1:
  82.     subl $8,%esp
  83.     movl $NDW,(%esp)
  84.     movl $_a+4*NDW,4(%esp)
  85.     movl $25,%edi
  86.     movl $80,_a+4*NDW
  87.     movl $1,%ebx
  88. L20:
  89.     call _div_add
  90.     addl $2,%ebx
  91.     call _div_sub
  92.     addl $2,%ebx
  93.     movl 4(%esp),%ecx
  94.     testl $-1,(%ecx)
  95.     jnz L20
  96.     addl $4,%ecx
  97.     decl (%esp)
  98.     movl %ecx,4(%esp)
  99.     cmpl $_a+8*NDW,%ecx
  100.     jb L20
  101.     addl $8,%esp
  102.     ret
  103.  
  104.     .align 2
  105. _kyusu2:
  106.     subl $8,%esp
  107.     movl $NDW,(%esp)
  108.     movl $_a+4*NDW,4(%esp)
  109.     movl $57121,%edi
  110.     movl $956,_a+4*NDW
  111.     movl $1,%ebx
  112. L30:
  113.     call _div_sub
  114.     addl $2,%ebx
  115.     call _div_add
  116.     addl $2,%ebx
  117.     movl 4(%esp),%ecx
  118.     testl $-1,(%ecx)
  119.     jnz L30
  120.     addl $4,%ecx
  121.     decl (%esp)
  122.     movl %ecx,4(%esp)
  123.     cmpl $_a+8*NDW,%ecx
  124.     jb L30
  125.     addl $8,%esp
  126.     ret
  127.  
  128.     .align 2
  129. _div_add:
  130.     movl 4(%esp),%ecx
  131.     movl 8(%esp),%esi
  132.     xorl %edx,%edx
  133.     xorl %ebp,%ebp
  134. L40:
  135.     lodsl
  136.     divl %edi
  137.     xchgl %edx,%ebp
  138.     movl %eax,-4(%esi)
  139.     divl %ebx
  140.     xchgl %edx,%ebp
  141.     addl %eax,-4*NDW-4(%esi)
  142.     adcl $0,-4*NDW-8(%esi)
  143.     jc L42
  144. L41:
  145.     loop L40
  146.     ret
  147. L42:
  148.     movl %esi,%eax
  149. L43:
  150.     subl $4,%eax
  151.     addl $1,-4*NDW-8(%eax)
  152.     jc L43
  153.     jmp L41
  154.  
  155.     .align 2
  156. _div_sub:
  157.     movl 4(%esp),%ecx
  158.     movl 8(%esp),%esi
  159.     xorl %edx,%edx
  160.     xorl %ebp,%ebp
  161. L50:
  162.     lodsl
  163.     divl %edi
  164.     xchgl %edx,%ebp
  165.     movl %eax,-4(%esi)
  166.     divl %ebx
  167.     xchgl %edx,%ebp
  168.     subl %eax,-4*NDW-4(%esi)
  169.     sbbl $0,-4*NDW-8(%esi)
  170.     jc L52
  171. L51:
  172.     loop L50
  173.     ret
  174. L52:
  175.     movl %esi,%eax
  176. L53:
  177.     subl $4,%eax
  178.     subl $1,-4*NDW-8(%eax)
  179.     jc L53
  180.     jmp L51
  181.  
  182.     .align 2
  183. .comm _a,8*NDW
  184.